package com.ydl.shopping.domain;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ydl.shopping.core.entity.BaseEntity;
import com.ydl.shopping.core.valid.ValidGroup;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.NotBlank;
import java.util.List;

/** 角色表 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("tb_role")
@Schema(name = "角色表")
public class TbRole extends BaseEntity {
    /** 角色名称 */
    @TableField("name")
    @NotBlank(groups = ValidGroup.Crud.Create.class, message = "角色名称不能为空")
    @NotBlank(groups = ValidGroup.Crud.Update.class, message = "角色名称不能为空")
    @Schema(description = "角色名称")
    private String name;

    /** 角色标识 */
    @TableField("perms")
    @NotBlank(groups = ValidGroup.Crud.Create.class, message = "角色标识不能为空")
    @NotBlank(groups = ValidGroup.Crud.Update.class, message = "角色标识不能为空")
    @Schema(description = "角色标识")
    private String perms;

    /** 角色类型，0：系统管理员，1：普通用户 */
    @TableField("type")
    @Range(min = 0, max = 1, message = "角色类型，0：系统管理员，1：普通用户")
    @Schema(description = "角色类型")
    private Integer type;

    /** 角色状态 0：禁用，1：可用 */
    @TableField("status")
    @Range(min = 0, max = 1, message = "角色状态 0：禁用，1：可用")
    @Schema(description = "角色状态")
    private Integer status;

    /** 是否默认设置角色 */
    @TableField("is_default")
    @Range(min = 0, max = 1, message = "是否默认设置角色 0：否，1：是")
    @Schema(description = "是否默认设置角色")
    private Integer isDefault;

    /** 排序 */
    @TableField("sort")
    @Schema(description = "排序")
    private Integer sort;

    /** 菜单IDs */
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    @TableField(exist = false)
    @Schema(description = "菜单IDs")
    private List<Long> menuIds;
}

/*
CREATE TABLE sys_role (
id bigint NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '角色编号',
name varchar(128) NOT NULL COMMENT '角色名称',
perms varchar(128) NOT NULL  UNIQUE KEY COMMENT '角色标识',
type int not null DEFAULT 1 comment '角色类型，0：系统管理员，1：普通用户',
status int NOT NULL DEFAULT 1 COMMENT '角色状态，0：禁用，1：可用',
is_default INT NOT NULL DEFAULT 0 COMMENT '是否默认设置角色',
sort int NOT NULL DEFAULT 1 COMMENT '排序',
remark varchar(128) NULL DEFAULT NULL COMMENT '备注',
create_by varchar(128) NOT NULL COMMENT '创建人',
create_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT "创建时间",
update_by varchar(128) COMMENT '修改人',
update_time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间'
)COMMENT '角色表';
 */